[新機能]dbt Cloudで前回失敗したModel・Testからジョブを再開できるようになりました
さがらです。
2023年10月のdbt Cloudのアップデートとして、前回失敗したModel・Testからジョブを再開できる機能が追加されました。
早速この機能を試してみたので、本記事でその内容をまとめてみます。
前提条件
本機能を使うためには、以下の要件を満たしている必要があります。dbt ver1.6で追加されたdbt retry
が前提の機能のため、このコマンドの条件を満たす必要があります。
- dbt Cloudの環境であること
- 使用するdbtのバージョンは「1.6」以上であること
- 対象となるジョブは、「最新の実行が
error
であること」「実行に失敗したコマンドが下記のコマンドのいずれかであること(dbt retryコマンドの公式Docより)」- build
- compile
- seed
- snapshot
- test
- run
- run-operation
詳細は、下記の本機能の公式Docにも記載がありますので、こちらも併せてご覧ください。
※これは私だけかもしれませんが、私のdbt Cloudのアカウント(USリージョン)では本機能が有効化されていなかったため、サポートに連絡して本機能有効化して頂きました!
事前準備
チュートリアルで使用されるJaffle Shopのデータについて、以下のリネージで構成されているModel群があるとします。
ここで、一番末端のModelであるcustomers.sql
の最後のselect句をあえて削除してMainブランチにMergeし、必ずエラーが起こるように仕込んでおきます。(検証用の愚行です…)
この上で、Environmentのdbtのバージョンを1.6にしておき、このEnvironmentでdbt build
を実行するジョブを準備しておきます。
1回目のジョブ実行
対象のジョブを手動実行してみます。
当然dbt build
でエラーを起こします。
customers.sql
は末端のModelなので、このModelの実行前に多くのModelやTestが実行されていました。これがRerun機能を使ったときにどうなるのかが注目ポイントです。
2回目のジョブ実行(Rerun機能を使用)
続いて、Rerun機能を用いて再実行してみます。
対象のジョブの右上のRerun
を押すと、Rerun from failure
というオプションが表示されますので、これを押します。
すると、dbt build
コマンドは失敗したcustomers.sql
から再開されていました!customers.sql
よりも前に実行されたModelやTestが再実行されていないのがいいですよね。
最後に
簡単ではありますが、2023年10月のdbt Cloudの新機能である「前回失敗したModel・Testからジョブを再開できる機能」を試してみました。
これはどのdbt Cloudユーザーにも使ってもらいたい機能ですので、ぜひ活用してみてください!